package com.asset.modules.budget.service;

import com.asset.modules.assets.service.AssetService;
import com.asset.modules.budget.model.Budget;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;

import java.io.Serializable;
import java.util.Collection;
import java.util.List;
import java.util.Map;

public interface BudgetService extends IService<Budget> {

//    /**
//     * 保存或更新预算信息
//     * @param budget
//     * @return
//     */
//     boolean saveOrUpdateBudget(Budget budget);

    /**
     * 获取一个预算对象
     * @param wrapper
     * @return
     */
     Budget getOneBudget(QueryWrapper<Budget> wrapper);


    /**
     * 获取预算列表
     * @param wrapper
     * @return
     */
     List<Budget> getListBudget(QueryWrapper<Budget> wrapper);

    /**
     * 根据ID查询预算信息
     * @param id
     * @return
     */
     Budget getBudgetById(Long id);

    /**
     * 获取预算分页数据
     * @param page
     * @param budget
     * @return
     */
     IPage<Budget> getBudgetPage(Page page, Budget budget);


    /**
     * 根据区域ID获取所有预算信息
     * @param companyId
     * @return
     */
     List<Budget> getBudgetByCompanyId(String companyId);

    /**
     * 字段是否存在
     * @param column
     * @param name
     * @return
     */
     boolean isExist(String column, String name);

    /**
     * 根据项目ID获取预算信息
     * @param projectId
     * @return
     */
     List<Budget> getBudgetByProjectId(String projectId);
    /**
     * 已用预算与余额
     * @param b
     * @return
     */
     Budget expenditureAndBalance(Budget b);

}
